1. Field of the Invention
This invention generally relates to data processing, and more specifically, to methods and systems for detecting anomalies, or debugging, software programs. Even more specifically, the preferred embodiment of the present invention relates to such methods and systems that are very well suited for debugging multithreaded software programs.
2. Background Art
Multithreaded computing programs are a special class of computer software programs comprised of a large number of threads of execution. Typically, each thread of computing environment executes on a dedicated processor such that the threads execute in parallel on a number of processors to solve a common problem.
Multithreaded programs are difficult to design and hence are error prone. Debugging multithreaded programs can be very difficult. Difficulties arise because of the non-determinacy of these programs—the programs are sensitive to the environment, load, thread time slicing, etc. Owing to this, a problem is left that is not easily re-creatable, and neither is it possible to collect all the debugging information needed to solve the problem.
Current debugging programs do not provide adequate means of debugging programs. For instance, there are tools like iWatcher which are hardware dependent, and are also meant purely for memory related bugs. There also are tools for anomaly detection like DIDUCE and DAIKON which are not hardware dependent, but suffer from a high number of false positives. DIDUCE and DAIKON automatically detect the invariants in the program, and monitor the anomaly in these invariants.